package share.completion;

import java.time.LocalDateTime;
import java.time.format.DateTimeFormatter;

/**
 * @author 小石潭记
 * @date 2021/4/19 20:32
 * @Description: 使用Future轮询获取结果 CompletionService。
 *  https://mp.weixin.qq.com/s/Z_Buz-Uiez41SXz7zpT3LQ
 */
public class CompletionServiceTest {

    public static void main(String[] args) throws InterruptedException {
        System.out.println(DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss").format(LocalDateTime.now()) + "---" + "开始----");
        String mouZhuFlightPrice = getMouZhuFlightPrice();
        String mouXieFlightPrice = getMouXieFlightPrice();
        String mouTuanFlightPrice = getMouTuanFlightPrice();
        saveDb(mouZhuFlightPrice);
        saveDb(mouXieFlightPrice);
        saveDb(mouTuanFlightPrice);
    }

    /**
     * 模拟请求某猪网站 爬取机票信息
     *
     *
     * @return
     * @throws InterruptedException
     */
    public static String getMouZhuFlightPrice() throws InterruptedException {
        // 模拟请求某猪网站 爬取机票信息
        Thread.sleep(8000);
        String result = "获取到某猪网站的机票信息了";
        System.out.println(DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss").format(LocalDateTime.now()) + "---" + result);
        return result;
    }

    /**
     * 模拟请求某携网站 爬取机票信息
     *
     * @return
     * @throws InterruptedException
     */
    public static String getMouXieFlightPrice() throws InterruptedException {
        // 模拟请求某携网站 爬取机票信息
        Thread.sleep(3000);
        String result = "获取到某携网站的机票信息了";
        System.out.println(DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss").format(LocalDateTime.now()) + "---" + result);
        return result;
    }


    /**
     * 模拟请求团网站 爬取机票信息
     *
     * @return
     * @throws InterruptedException
     */
    public static String getMouTuanFlightPrice() throws InterruptedException {
        // 模拟请求某团网站 爬取机票信息
        Thread.sleep(2000);
        String result = "获取到某团网站的机票信息了";
        System.out.println(DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss").format(LocalDateTime.now()) + "---" + result);
        return result;
    }

    /**
     * 保存DB
     *
     * @param flightPriceList
     */
    public static void saveDb(String flightPriceList) {
        // 解析字符串 进行异步入库
        System.out.println("异步保存result入库----->" + flightPriceList);
    }

}
